//
//  Custom_ZHTool.h
//  FootPad
//
//  Created by 张浩 on 2021/3/18.
//  Copyright © 2021 hb_147. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "MM_PublicHUD.h"

NS_ASSUME_NONNULL_BEGIN

//单例

#define ZHSingletonH(ClassName) +(instancetype) share##ClassName;


#define ZHSingletonM(ClassName) static id _instance;\
static dispatch_once_t onceToken;\
\
+(instancetype)share##ClassName\
{\
dispatch_once(&onceToken, ^{\
_instance = [[self alloc] init];\
});\
\
return _instance;\
}\
\

typedef NS_ENUM(NSInteger,MMUploadViewType) {
    MMUploadViewTypeNone = 0, // 默认什么都没有
    MMUploadViewTypeSucessed,
    MMUploadViewTypeFail,
    MMUploadViewTypeUploading,
};

@interface Custom_ZHTool : NSObject

#pragma mark ----------------    控件创建      ------------------
//包装常用控件创建方式，以便提高代码简洁性
+(id)uiButtonCreate:(UIColor*)backcolor Text:(NSString*)text TextColor:(UIColor *)textColor TextFont:(UIFont*)textFont Image:(UIImage*)image;
// fontsize 为负数表示粗体
+(id)uiLabelCreate:(NSString*)text Font:(UIFont*)font TextColor:(UIColor*)textcolor;
+(id)uiLabelCreate:(NSString*)text Frame:(CGRect)frame Font:(UIFont*)font TextColor:(UIColor*)textcolor;

#pragma mark ----------------    获取文字size      ------------------
/* 获取具体size **/
+ (CGSize)getTextSizeWithFont:(UIFont *)font text:(NSString *)text maxWidth:(CGFloat)maxWidth;

/* 获取单行中的size **/
+ (CGSize)getTextSizeWithFont:(UIFont *)font text:(NSString *)text;

#pragma mark ----------------    图片      ------------------
/**
 压缩图片
 
 @param sourceImage 要处理的图片
 @param targetWidth 比例
 @return 处理好的
 */
+ (UIImage *)compressForWidthOfImage:(UIImage *)sourceImage targetWidth:(CGFloat)targetWidth;

#pragma mark ----------------    时间处理      ------------------
/**获取当前时间**/
+(NSString *)getCurrentTimeStr;
+(NSString *)getCurrentTimeStr_MM;
//计算 中英文混合 字符数；
+(int)convertToInt:(NSString*)strtemp;



+(NSMutableAttributedString *)createAttributedStringWithString:(NSString *)string key:(NSString *)key fontSize:(CGFloat)fontSize keyColor:(UIColor *)color;

+(NSMutableAttributedString *)createAttributedStringWithString:(NSString *)string key:(NSString *)key keyFont:(UIFont *)font keyColor:(UIColor *)color;

/**
 取指定的日期显示
 
 @param dateStr 后台返回的YYYY-MM-dd HH:mm:ss格式的日期Str
 @param format @"YYYY-MM-dd HH:mm:ss"
 @return 日期
 */
NSString *getCustomDateStr(NSString *dateStr,NSString *format);
/**
 取指定的日期显示转年月日时分秒
 
 @param dateStr 后台返回的YYYY-MM-dd HH:mm:ss格式的日期Str
 @param format @"yyyy年MM月dd日 HH时mm分ss秒"
 @return 日期
 */
NSString *getChineseDateStr(NSString *dateStr,NSString *format);



#pragma mark ----------------    定时器      ------------------
/**
 开启一个定时器
 
 @param target 定时器持有者
 @param timeInterval 执行间隔时间
 @param handler 重复执行事件
 
 调用 dispatch_source_cancel(timer); 就会将 timer 对象销毁，唯一要考虑的就是 timer 的结束时机；即使你不主动释放timer， 也不会造成循环引用哦 O(∩_∩)O~
 */
void dispatchTimer(id target, double timeInterval,void (^handler)(dispatch_source_t timer));


/**
 获取视频的第一帧图片
 
 @param videoURL 视频的本地路径
 @param time 获取时间一般是0.01
 @return 图片
 */
+ (UIImage*)thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time;

//秒转多少分钟多少秒
+(NSString *)getMMSSFromSS:(NSString *)totalTime;
//毫秒转化为时分秒
+(NSString *)getWhenVehicleSS:(NSString *)msTime;

//输入的是否符合金钱规则
+ (BOOL)textFieldIsPrice:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
//取整数 取余数
+ (NSArray *)exceptActionString:(NSString *)string1 andString:(NSString *)string2;
+ (NSArray *)exceptBatchActionString:(NSString *)string1 andString:(NSString *)string2;

//获取当前年
+ (NSString *)getCurrentYear;
//获取当前月
+ (NSString *)getCurrentMonth;
//获取当前日
+ (NSString *)getCurrentDay;
//数字转化汉子
+ (NSString *)translationChinese:(NSString *)numberStr;

//通过连接生成图片
+ (UIImage *)creatQRImage:(NSString *)url withSize:(CGFloat)size;

/**
 *  判断两个版本的大小
 *
 *  @param version1 第一比较的版本
 *  @param version2 第二个比较的版本
 *
 *  @return 返回两个版本的比较
 
 version1 > version2 返回 1
 version1 < version2 返回 -1
 version1 = version2 返回 0
 */
+ (NSInteger)versionCompareResultWithversion1:(NSString *)version1 version2:(NSString *)version2;
//处理服务器丢失精度问题
+ (NSString *)precisionLossNumber:(NSString *)numberStr;
/// 特殊符号
+ (NSString *)specialSymbolsAction;
//处理手机号
+ (NSString *)getPhoneDesc:(NSString *)phoneStr;

//获取视频大小
+ (NSString *)getVideoSizeMPath:(NSURL *)filUrl;
/** 设置缩放动画 */
+ (void)startScaleAnimation:(UIView *)view andDuration:(CGFloat)duration CGAScaleX:(CGFloat)ScaleX CGAScaleY:(CGFloat)ScaleY;
//比较两个时间相差多少天 用来弹闲机弹窗
+ (NSInteger)compareTime:(NSString *)fristTime andEndtime:(NSString *)endTime;
//比较两个时间相差多少秒 用来判断弹窗
+ (NSInteger)comSecondspareTime:(NSString *)fristTime andEndtime:(NSString *)endTime;
//判断字符串是否是纯数字
+ (BOOL)checkIsAllNumberWithString:(NSString *)string;
@end

NS_ASSUME_NONNULL_END
